package com.mall.module.system.mapper;

import com.mall.module.system.domain.entity.SysRole;
import com.mall.module.system.domain.entity.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface SysRoleMapper {
    
    /**
     * 根据用户ID获取角色列表
     * 
     * @param userId 用户ID
     * @return 角色列表
     */
    List<SysRole> selectRolesByUserId(@Param("userId") Long userId);

    List<SysRole> selectRoleList(@Param("roleName") String roleName, @Param("status") Integer status);

    SysRole selectRoleById(Long roleId);

    int insertRole(SysRole role);

    int updateRole(SysRole role);

    int deleteRoleById(Long roleId);

    int updateRoleStatus(@Param("roleId") Long roleId, @Param("status") Integer status);

    int deleteRoleMenuByRoleId(Long roleId);

    int insertRoleMenu(@Param("roleId") Long roleId, @Param("menuId") Long menuId);

    int deleteRolePermissionByRoleId(Long roleId);

    int insertRolePermission(@Param("roleId") Long roleId, @Param("permissionId") Long permissionId);

    List<Long> selectMenuIdsByRoleId(Long roleId);

    List<Long> selectPermissionIdsByRoleId(Long roleId);

    List<SysUser> selectUsersByRoleId(Long roleId);

    int deleteUserRoleByRoleId(Long roleId);

    int insertUserRole(@Param("userId") Long userId, @Param("roleId") Long roleId);
} 